﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using AutoBackupDatabase.BLL;
using AutoBackupDatabase.General;
using AutoBackupDatabase.ENT;
using AutoBackupDatabase.Form;

namespace AutoBackupDatabase
{
    public partial class Role_ucc : DevExpress.XtraEditors.XtraUserControl
    {
        private ROLEBLL roleBLL;
        List<ROLEENT> listrole;
        private GROUPROLEBLL groupRoleBLL;
        public Role_ucc()
        {
            InitializeComponent();
            roleBLL = new ROLEBLL();
            listrole = new List<ROLEENT>();
            groupRoleBLL = new GROUPROLEBLL();
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {


            if (!checkRole.CHECKROLE(general.groupUserCode, Role.role_add))
            {
                MessageBox.Show("Bạn chưa chưa được cấp quyền sử dụng cho tính năng này");
                return;
            }
            if (btnAdd.Text == "THÊM MỚI")
            {
                general.ChangeButtonStatus("insert", btnAdd, btnUpdate, btnDelete);
                txtRoleCode.Text = "";
                txtRoleName.Text = "";
                glkGroupRole.EditValue = "";
                txtRoleCode.Enabled = true;
                txtRoleName.Enabled = true;
                glkGroupRole.Enabled = true;
                return;
            }
            else if (btnAdd.Text == "LƯU")
            {
                if (!Validator.IsNull(txtRoleName.Text))
                {
                    MessageBox.Show("Tên quyền không được bỏ trống vui lòng kiểm tra lại", "Thông báo");
                    return;
                }
                if (glkGroupRole.EditValue.ToString()=="")
                {
                    MessageBox.Show("Nhóm quyền không được bỏ trống vui lòng kiểm tra lại", "Thông báo");
                    return;
                }
                if (listrole.Count > 0)
                {
                    if (listrole.Exists(p => p.ROLENAME.Equals(txtRoleName.Text.TrimStart().TrimEnd())))
                    {
                        MessageBox.Show("Tên nhóm này [" + txtRoleName.Text + "] đã tồn tại vui lòng nhập tên khác", "Thông báo");
                        return;
                    }
                }
                if (listrole.Count > 0)
                {
                    if (listrole.Exists(p => p.ROLECODE.Equals(txtRoleCode.Text.TrimStart().TrimEnd())))
                    {
                        MessageBox.Show("Mã nhóm này [" + txtRoleCode.Text + "] đã tồn tại vui lòng nhập tên khác", "Thông báo");
                        return;
                    }
                }






                ROLEENT ent = new ROLEENT();
                ent.ROLENAME = txtRoleName.Text;
                ent.ROLECODE = txtRoleCode.Text;
                ent.USERCREATE = LoginInfo._USERNAME;
                ent.USERUPDATE = LoginInfo._USERNAME;
                ent.GROUPROLECODE = glkGroupRole.EditValue.ToString();
                if (roleBLL.INSERTROLE(ent))
                {
                    txtRoleCode.Text = "";
                    txtRoleName.Text = "";

                    general.ChangeButtonStatus("insert", btnAdd, btnUpdate, btnDelete);

                    MessageBox.Show("Thêm mới thành công", "Thông báo");
                    txtRoleCode.Enabled = false;
                    txtRoleName.Enabled = false;
                    glkGroupRole.Enabled = false;

                    LoadDataRole();
                }
                else
                {
                    MessageBox.Show("Thêm mới thất bại vui lòng kiểm tra lại dữ liệu ", "Thông báo");
                }
            }
            else
                MessageBox.Show("Thêm mới thất bại vui lòng kiểm tra lại dữ liệu ", "Thông báo");
        }

        private void btnUpdate_Click(object sender, EventArgs e)
        {
            try
            {
                if (!checkRole.CHECKROLE(general.groupUserCode, Role.role_edit))
                {
                    MessageBox.Show("Bạn chưa chưa được cấp quyền sử dụng cho tính năng này");
                    return;
                }
                if (btnUpdate.Text == "CẬP NHẬT")
                {
                    general.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);

                    txtRoleCode.Enabled = false;
                    txtRoleName.Enabled = true;
                    glkGroupRole.Enabled = true;
                    return;

                }
                else
                    if (btnUpdate.Text == "HỦY")
                    {
                        general.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);
                        txtRoleCode.Enabled = false;
                        txtRoleName.Enabled = false;
                        glkGroupRole.Enabled = false;

                    }
                    else if (btnUpdate.Text == "LƯU")
                    {

                        if (!Validator.IsNull(txtRoleCode.Text))
                        {
                            MessageBox.Show("Vui lòng chọn dữ liệu cần cập nhật", "Thông báo");
                            return;
                        }
                        if (!Validator.IsNull(txtRoleName.Text))
                        {
                            MessageBox.Show("Tên nhóm không được bỏ trống vui lòng kiểm tra lại", "Thông báo");
                            return;
                        }



                     
                        ROLEENT ent = new ROLEENT();
                        ent.ROLENAME = txtRoleName.Text;
                        ent.ROLECODE = txtRoleCode.Text;
                        ent.USERCREATE = LoginInfo._USERNAME;
                        ent.USERUPDATE = LoginInfo._USERNAME;
                        ent.GROUPROLECODE = glkGroupRole.EditValue.ToString();

                        if (roleBLL.UPDATEROLEBYROLEID(ent))
                        {
                            MessageBox.Show("Cập nhật thành công", "Thông báo");
                            txtRoleCode.Enabled = false;
                            txtRoleName.Enabled = false;
                            glkGroupRole.Enabled = false;
                            LoadDataRole();
                            general.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);
                            
                        }
                    }
                    else
                        MessageBox.Show("Cập nhật thất bại vui lòng kiểm tra lại dữ liệu ", "Thông báo");
            }
            catch (Exception)
            {

                return;
            }
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            try
            {
                if (!checkRole.CHECKROLE(general.groupUserCode, Role.role_delete))
                {
                    MessageBox.Show("Bạn chưa chưa được cấp quyền sử dụng cho tính năng này");
                    return;
                }

                if (btnDelete.Text == "HỦY")
                {
                    txtRoleCode.Enabled = false;
                    txtRoleName.Enabled = false;
                    glkGroupRole.Enabled = false;
                    general.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);
                    
                }
                else if (btnDelete.Text == "XÓA" && Validator.IsNull(txtRoleCode.Text))
                {
                    if (MessageBox.Show(MessageShow.delConfirmInfo, MessageShow.delConfirmCaption, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
                    {
                        ROLEENT ent = new ROLEENT();
                        ent.ROLECODE =txtRoleCode.Text;
                        roleBLL.DELTELEROLEBYROLEID(ent);
                        LoadDataRole();
                        general.ChangeButtonStatus("delete", btnAdd, btnUpdate, btnDelete);
                    }
                }
                else
                    return;
            }
            catch (Exception)
            {

                return;
            }
        }

        public void LoadDataRole()
        {
            listrole = roleBLL.GET_ROLE_ALL();
            dtTable.DataSource = listrole;
            if (gridView1.RowCount > 0)
            {
                gridView1.InvertRowSelection(0);
            }
        }

        DETAILGROUPUSERROLEBLL checkRole = new DETAILGROUPUSERROLEBLL();

        private void Role_ucc_Load(object sender, EventArgs e)
        {
            try
            {
            
             
                if (!checkRole.CHECKROLE(general.groupUserCode, Role.role_delete))
                {
                    btnDelete.Enabled = false;

                }

                LoadDataRole();
                LoadDataGroupRole();
            }
            catch (Exception)
            {


            }
          
        }

        private void LoadDataGroupRole()
        {

            glkGroupRole.Properties.DataSource = groupRoleBLL.GET_GROUPROLE_ALL();
            glkGroupRole.Properties.DisplayMember = "GROUPROLENAME";
            glkGroupRole.Properties.ValueMember = "GROUPROLECODE";
            
        }

        private void gridView1_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
        {
            try
            {
                if (e.RowHandle >= 0)
                {
                    ROLEENT  role= (ROLEENT)gridView1.GetFocusedRow();
                    txtRoleCode.Text = role.ROLECODE.ToString();
                    txtRoleName.Text = role.ROLENAME;
                    glkGroupRole.EditValue = role.GROUPROLECODE;

                }
            }
            catch (Exception)
            {

                return;
            }
        }

        private void glkGroupRole_Properties_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
        {
            if (glkGroupRole.Properties.Buttons[1]==e.Button)
            {
                frmGroupRole role = new frmGroupRole();
                role.ShowDialog();
                LoadDataGroupRole();
            }
        }

        
    }
}
